################################################################################
# Базовый класс для контроллеров.
# Методы этого класса доступны во всех контроллерах.
################################################################################
@CLASS
ApplicationController
@USE
Class.p
@BASE
Class
@OPTIONS
locals


# конструктор
@init[]
	^BASE:init[]


# сила действия равна:
@action[sMethodName]

	^if(!def $sMethodName){$sMethodName[$h0.sAction]}

	^rem{ тут происходит всё, что должно произойти до выполнения действий }
	
	
	^rem{ тут происходит действие }
	^if($self.[ACTION_$sMethodName] is junction){
		^rem{ тут будет вызов метода действия.
			  тут же формируется XML документа,
			  а контент формируется внутри метода действия }
		$sContent[^self.[ACTION_$sMethodName][]]
		^dcompact[]
		
		$result[^xdoc::create{<?xml version="1.0" encoding="UTF-8" ?>
			<document>
				<system>
					<controller>$CLASS_NAME</controller>
					<action>$sMethodName</action>
					<uri><![CDATA[$h0.sUri]]></uri>
					<query><![CDATA[$h0.sQuery]]]></query>
# 					<form>
# 						^rem{ TODO: корректный вывод информации о файлах и другие приколы форм }
# 						^form:fields.foreach[sField;sValue]{<$sField>$sValue</$sField>}
# 					</form>
					<env>
						<userAgent>$env:HTTP_USER_AGENT</userAgent>
					</env>
				</system>
				<content>$sContent</content>
			</document>}]
	}{
		^throw[action_not_found]
	}
	
	^rem{ тут происходит то, что должно произойти после действия }
	
	
